/* 
 *  Copyright (C) 2009-2010 milkyjing <milkyjing@gmail.com>
 *
 *  This Program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2, or (at your option)
 *  any later version.
 *   
 *  This Program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 *  GNU General Public License for more details.
 *   
 *  You should have received a copy of the GNU General Public License
 *  along with GNU Make; see the file COPYING.  If not, write to
 *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
 *  http://www.gnu.org/copyleft/gpl.html
 *
 */

#ifndef TCSFILTER_H
#define TCSFILTER_H
#pragma once

#include <windows.h>
#include "avisynth.h"
#include "../../../libtcs project/libtcs/trunk/tcs.h"

class TcsRenderer : public GenericVideoFilter {
private:
    char m_filename[MAX_PATH];
    TCS_File m_file;
    TCS_Header m_header;
    TCS_pIndex m_pIndex;
    tcs_u32 m_fpsNumerator;
    tcs_u32 m_fpsDenominator;
    tcs_u32 m_minFrame;
    tcs_u32 m_maxFrame;
public:
    TcsRenderer(PClip _child, IScriptEnvironment *env, const char *filename, double fps, int maxMemory);
    ~TcsRenderer();
    void InitializeIndex(IScriptEnvironment *env);
    void RenderRGB24(const PVideoFrame *pSrc, PVideoFrame *pDst, int n, IScriptEnvironment *env);
    void RenderRGB32(const PVideoFrame *pSrc, PVideoFrame *pDst, int n, IScriptEnvironment *env);
    void RenderYUY2(const PVideoFrame *pSrc, PVideoFrame *pDst, int n, IScriptEnvironment *env);
    void RenderYV12(const PVideoFrame *pSrc, PVideoFrame *pDst, int n, IScriptEnvironment *env);
    PVideoFrame __stdcall GetFrame(int n, IScriptEnvironment *env);
};

#endif    /* TCSFILTER_H */

